#ifndef __shortcuts_hxx__
#define __shortcuts_hxx__

#include <QtCore/QSettings>
#include <QtCore/QMap>

struct ShortCut
{
	QString SPK;
	QString shortcut;
	QString description;
	int keycode;
};

class Shortcuts : public QObject
{
	Q_OBJECT
public:
	~Shortcuts();
	
	static Shortcuts* getInstance();
	
	void load();
	
	void add(const QString& shortcut, const QString& description, const QString& SPK, const int& keycode);
	
	QList<ShortCut> getActions();
	
	QString isReserved(const QString& shortcut, const QString& SPK);
	
	void setShortcut(const QString& shortcut, const QString& description, const QString& SPK, const int& keycode);
	
	void clearShortcut(const QString& SPK);
	void removeShortcut(const QString& SPK);
	
	QString cleanName(const ShortCut& shortcut);
	QString cleanName(const QString& s);
	
private:
	QSettings settings;
	
	QMap<QString, ShortCut> actions;
	
	static Shortcuts* instance;
	
	QString settingsKey(ShortCut& shortcut);
	QString settingsKey(const QString& shortcut);
	
protected:
	Shortcuts();
};

#endif
